#pragma once

#include "WorkModeReceiverInterface.h"
#include <string>
#include <vector>

class WorkModeReceiverFake;
typedef Factory < WorkModeReceiverInterface >::CastedPtr < WorkModeReceiverFake > WorkModeReceiverFakePtr;

class WorkModeReceiverFake
: public WorkModeReceiverInterface
{
public:
	static WorkModeReceiverFakePtr Spawn ();
	static void CheckInnocence ();
private:
	virtual void CreateNew ();
	virtual void OpenExisting ();
	virtual void ChangeDesignation ();
	virtual void MakeCopy ();
	virtual void Quit ();
	virtual void DeleteToTrashCan ();
	virtual void RestoreFromTrashCan ();
	virtual void ExtractFromPackage ();
	virtual void ImportFromFoxPro ();
	virtual void ImportFromOracle ();
public:
	std::vector < std::string > callHistory;
	static const std::string CHANGE_DESIGNATION;
	static const std::string CREATE_NEW;
	static const std::string DELETE_TO_TRASH_CAN;
	static const std::string EXTRACT_FROM_PACKAGE;
	static const std::string IMPORT_FROM_FOX_PRO;
	static const std::string IMPORT_FROM_ORACLE;
	static const std::string MAKE_COPY;
	static const std::string OPEN_EXISTING;
	static const std::string QUIT;
	static const std::string RESTORE_FROM_TRASH_CAN;
private:
	static Factory < WorkModeReceiverInterface > factory;
};
